﻿/**************************************************************************
 * @file :   IPAddressEdit.h
 * @brief :  
 * @author :   C0946639 尹志刚
 * @version :  1.0.0.1
 * @date :	   2025/04/14
 * @Description: 
 ***************************************************************************/

#ifndef IPADDRESSEDIT_H
#define IPADDRESSEDIT_H

#include "../generalui_global.h"
#include "../GlobalUIDef.h"

#include <QWidget>
#include <QLineEdit>
#include <QLabel>

namespace GeneralUI {

	class GENERALUI_EXPORT IPAddressEdit : public QWidget
	{
		Q_OBJECT

	public:
		explicit IPAddressEdit(QWidget *parent = nullptr);
		~IPAddressEdit();

		/**
		 * @brief   setIP 设置IP框中内容
		 * @return
		 */
		bool setIPAddress(const QString& strIP);

		/**
		 * @brief   GetIP 获取IP字符串
		 * @return  IP字符串
		 */
		QString getIPAddress() const;
		
		/**
		 * @brief   setIP 设置背景颜色
		 * @return
		 */
		void setBackgroundColor(const QString &bgColor);

		/**
		 * @brief   setIP 设置边框颜色
		 * @return
		 */
		void setBorderColor(const QString &borderColor);

		/**
		 * @brief   setBorderRadius 设置IP边框圆角角度
		 * @return
		 */
		void setBorderRadius(int borderRadius);

		/**
		 * @brief   clear 清除IP框中内容
		 * @return
		 */
		void clear();

		/**
		 * @brief   sizeHint 设置默认尺寸
		 * @return
		 */
		QSize sizeHint() const override;

		/**
		 * @brief   minimumSizeHint 设置默认最小尺寸
		 * @return
		 */
		QSize minimumSizeHint() const override;

	protected:
		/**
		 * @brief   eventFilter 输入事件
		 * @return
		 */
		bool eventFilter(QObject *watched, QEvent *event) override;

	private slots:
		/**
		 * @brief   textChanged 光标切换
		 * @return
		 */
		void textChanged(const QString &text);

	private:
		/**
		 * @brief   updateStyleSheet 设置样式
		 * @return
		 */
		void updateStyleSheet();

	private:
		QLabel * m_pLabelDot1;					// 第一个小圆点
		QLabel * m_pLabelDot2;					// 第二个小圆点
		QLabel * m_pLabelDot3;					// 第三个小圆点

		QLineEdit * m_pLineEditIP1;				// IP地址网段输入框1
		QLineEdit * m_pLineEditIP2;				// IP地址网段输入框2    
		QLineEdit * m_pLineEditIP3;				// IP地址网段输入框3  
		QLineEdit * m_pLineEditIP4;				// IP地址网段输入框4  

		QString m_strIPAddress;					// Ip地址
		QString m_backgroundColor;				// 背景颜色
		QString m_borderColor;					// 边框颜色
		int m_borderRadius;						// 边框圆角角度
	};
}

#endif // IPADDRESSEDIT_H
